输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:23:54
程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。
例如153的各位数字的立方和是 1^3+5^3+3^3=153 ,这里a^b表示a的b次方。
输出使用语句:printf("%d\n", i);
输入输出示例:括号内为说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
result:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
result:
1 (1*1*1=1)

#include "stdio.h"
int main(void)
{
int i, digit, m, n, number, sum;
int repeat, ri;

scanf("%d",&repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
printf("result:\n");
/*---------*/
}
}

我的程序为什么不对啊
#include "stdio.h"
int main(void)
{
in

int is(int number)//定义一个返回值为int型的函数,命名为is,并定义一个int型参数number
{
int temp,digit,sum,res;
temp=number;//将传递进来的参数number赋值给temp
sum=0;//初始化和为0
while(number!=0){//如果传递进来的数字不为0,执行while循环
digit=number%10;//获取个位上的数字
sum=sum+pow(digit,3);//将和加上上行代码所获得的个位数字的立方和
number=number/10;//将数字除以10,继续while循环
}
if(sum==temp)//根据sum的结果判断是否为水仙花树
res=1;
else
res=0;
return res;
}
这个函数用于判断是否是水仙花数(也就是你说的各位数字立方和等于本身)

你这个程序有一个bug,就是没有判断用户的输入是否为合法的。对用户输入的m n的值范围没有进行判断。可进行相应的修改,使程序更完美。

int is(int number)//定义一个返回值为int型的函数,命名为is,并定义一个int型参数number
{
int temp,digit,sum,res;
temp=number;//将传递进来的参数number赋值给temp
sum=0;//初始化和为0
while(number!=0){//如果传递进来的数字不为0,执行while循环
digit=number%10;//获取个位上的数字
sum=sum+pow(digit,3);//将和加上上行代码所获得的个位数字的立方和
number=number/10;//将数字除以10,继续while循环
}
if(sum==temp)//根据sum的结果判断是否为水仙花树